package utils

import "fmt"

// 定义一个泛型Set
type Set[T comparable] map[T]struct{}

// 添加元素到Set
func (s Set[T]) Add(item T) {
	s[item] = struct{}{}
}

// 移除元素从Set
func (s Set[T]) Remove(item T) {
	delete(s, item)
}

// 检查元素是否存在于Set中
func (s Set[T]) Contains(item T) bool {
	_, exists := s[item]
	return exists
}

// 返回Set的大小
func (s Set[T]) Size() int {
	return len(s)
}

// 打印Set中的所有元素（注意：不保证顺序）
func (s Set[T]) Print() {
	for item := range s {
		fmt.Println(item)
	}
}
